home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
A-Monthly Disks
/
(c)aak.d64
/
golf handicap
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
14KB
|
529 lines
10 REM GOLF HANDICAP
20 REM AL JOHNSON
25 REM 12302 COLERAINE CT
30 REM RESTON, VA 22091
35 REM SEND ME A CARD IF YOU LIKE IT OR
40 REM HAVE ANY SUGGESTIONS
50 REM REVISED NOV.28/86 J.CAIN
100 POKE53280,11:POKE53281,15
110 GOSUB8000
115 RL=25
120 DIM CR$(20,24),RD$(50,25),HG$(50,18),HF$(50,18),CU(25,23)
125 DIM HC(50,7),SC(4)
130 OPEN15,8,15,"I0":OPEN6,8,6,"0:GLF COURSE,S,R":GOSUB9600
140 IF EN<>0 THEN OM$="COURSE FILE NOT FOUND":GOTO220
150 INPUT#6,CC
160 FORX=1TOCC:FORY=1TO23:INPUT#6,CR$(X,Y):NEXTY:NEXTX
210 CLOSE6:CLOSE15
220 U1$="[164]":U2$="[164][164]":SP$=" "
230 U9$="[164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
240 FORX=1TO25:READA,B,C:CU(X,1)=A:CU(X,2)=B:CU(X,3)=C:NEXTX
250 FORX=828TO828+10 :READA:POKEX,A:NEXTX
260 POKE850,22:POKE851,8:SYS828
270 PRINT"PRESS ANY KEY WHEN READY":GOSUB9200
490 GOTO5000
499 REM ** LIST COURSE NAMES
500 PRINT"[147]";TAB(13);"COURSES"
510 FORX=1TOCC
520 PRINT"";X;TAB(8);CR$(X,1);TAB(31);CR$(X,23)
540 NEXTX
550 PRINT"[151]ENTER NUMBER OF COURSE PLAYED"
553 INPUT"[151]OR _ IF COURSE NOT SHOWN";CX$:CX=VAL(CX$)
555 IF CX$="_" THEN RETURN
560 IF CX<1 OR CX>CC THEN PRINT"INVALID":GOTO550
570 RETURN
698 REM *****LOAD SUBROUTINE
700 PRINT"[147]LOADING GOLF FILE"
710 PRINT"[151]C[146] TO CONTINUE - OTHER FOR MENU"
720 GOSUB9200:IF K$<>"C" THEN OM$="NO LOAD":RETURN
730 OPEN15,8,15,"I0"
740 OPEN7,8,7,"0:GOLF DATA,S,R":GOSUB9600
750 IF AB$="Y"THEN OM$="NO ROUNDS FOUND":GOTO890
760 INPUT#7,RC
770 FORX=1TORC
780 FORY=1TO25:INPUT#7,RD$(X,Y):NEXTY
790 FORY=1TO18:INPUT#7,HG$(X,Y):NEXTY
840 FORY=1TO18:INPUT#7,HF$(X,Y):NEXTY
870 NEXTX
880 OM$="LOAD OK "+STR$(RC)+" ROUNDS"
890 CLOSE7:CLOSE15
900 RETURN
998 REM ** SAVE SUBROUTINE
1000 PRINT"[147]SAVE THE ROUNDS TO DISK"
1010 PRINT"[151]C[146] TO CONTINUE - OTHER FOR MENU"
1020 GOSUB9200:IFK$<>"C" THEN OM$="SAVE NOT DONE":RETURN
1030 OPEN15,8,15,"I0"
1040 OPEN8,8,8,"@0:GOLF DATA,S,W":GOSUB9600
1050 IF AB$="Y" THEN OM$="DISK ERROR - "+EM$":GOTO1130
1055 SV$[178]"Y"
1060 [152]8,RC
1070 [129]X[178]1[164]RC
1080 [129]Y[178]1[164]25:[152]8,RD$(X,Y):[130]Y
1090 [129]Y[178]1[164]18:[152]8,HG$(X,Y):[130]Y
1100 [129]Y[178]1[164]18:[152]8,HF$(X,Y):[130]Y
1110 [130]X
1120 OM$[178]"SAVE OK - "[170][196](RC)[170]" ROUNDS"
1130 [160]8:[160]15
1140 [142]
1198 [143] **** BACK UP SUBROUTINE
1200 [153]"LOADBACKUP GOLF ROUNDS"
1210 [153]"POKECWAIT TO CONTINUE - OTHER FOR MENU":[141]9200
1220 [139]K$[179][177]"C" [167] OM$[178]"NO BACKUP":[142]
1230 [153]"INSERT BACKUP DISK
1240 PRINT"HIT A KEY[151]":GOSUB9200
1260 OPEN15,8,15,"I0"
1270 OPEN8,8,8,"GOLF DATA-BK,S,W":GOSUB9600
1280 IF AB$<>"Y" THEN 1310
1290 OM$="BKUP DISK ERROR - "+EM$:OP$="INSERT MAIN DISK OR 'Q'"
1300 CLOSE8:CLOSE15:RETURN
1310 GOSUB1060
1315 BK$="Y"
1320 OM$="BACKUP OK - "+STR$(RC)+" ROUNDS"
1330 OP$="INSERT MAIN DISK OR QUIT"
1340 RETURN
1498 REM *** FILL SCREEN FOR DISPLAY
1500 PRINT"[147]";TAB(10);"PERSONAL GOLF HANDICAP"
1510 PRINT"";TAB(15);"ROUNDS PLAYED"
1520 PRINTTAB(6);"[152]COURSE"
1530 PRINT" PAR";TAB(9);"RATING";TAB(22);"DATE PLAYED"
1540 PRINTTAB(10);"SC G F";TAB(31);"SC G F"
1550 FORX=1TO7STEP2
1560 PRINT" HOLE ";X;TAB(23);"HOLE ";X+1
1570 NEXTX
1580 PRINT" HOLE 9";TAB(23);"HOLE 10"
1590 FORX=11TO17 STEP2
1600 PRINT" HOLE";X;TAB(23);"HOLE";X+1
1610 NEXTX
1620 PRINT"[152]";TAB(5);"PUTTS SCORE DFRNTL"
1630 PRINT"[152]A[146]DD M[146]ODIFY N[146]EXT B[146]ACK D[146]EL Q[146]UIT"
1650 RETURN
1798 REM PUT UNDERLINE IN TABLE SUBR
1800 RD$(CP,2)=U2$+U2$
1810 RD$(CP,3)=U2$+U2$
1830 FORX=1TO18:RD$(CP,X+3)=U2$:HG$(CP,X)=U1$:HF$(CP,X)=U1$:NEXTX
1880 RD$(CP,23)=U2$
1890 RD$(CP,24)=U2$+U1$
1895 RETURN
1998 REM ** FILL DATA AREAS OF SCREEN
2000 PRINT"[151] #";STR$(CP):PRINT"OF ";STR$(RC)
2003 POKE850,3:POKE851,13:SYS828
2008 IF LEFT$(CN$,1)<>"[164]"THEN PP=VAL(RD$(CP,1)):CN$=CR$(PP,1)
2010 PRINT"[151]";CN$;"[146] "
2020 FORX=2TO25
2030 POKE850,CU(X,1):POKE851,CU(X,2):SYS828
2035 PP=CU(X,3):PRINTLEFT$(SP$,PP);:SYS828
2040 PRINTRD$(CP,X)
2050 IF X<4 OR X>21 THEN 2100
2060 POKE850,CU(X,1):POKE851,CU(X,2)+4:SYS828
2070 PRINTHG$(CP,X-3)
2080 POKE850,CU(X,1):POKE851,CU(X,2)+6:SYS828
2090 PRINTHF$(CP,X-3)
2100 NEXTX
2110 RETURN
2198 REM ** CALC BIRDS PARS ETC
2200 FOR X=4 TO 21
2203 W9=VAL(RD$(CP,1))
2210 W=VAL(CR$(W9,X+1))-VAL(RD$(CP,X))
2220 IF W=2 THEN EG=EG+1
2230 IF W=1 THEN BI=BI+1
2240 IF W=0 THEN PA=PA+1
2250 IF W=-1 THEN BO=BO+1
2260 IF W=-2 THEN DB=DB+1
2270 IF W<-2 THEN OT=OT+1
2280 NEXTX
2285 IF S$="Y" THEN RETURN
2290 POKE850,19:POKE851,2:SYS828
2300 PRINT"EGL";EG;" BIRD";BI;" PAR";PA;
2310 PRINT" BOG";BO;" DBL";DB;"[151]"
2320 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0
2330 RETURN
2398 REM CALC, STORE AND PRINT SCORES
2400 SC=0:PRINT"[151]"
2410 FORX=4TO21:SC=SC+VAL(RD$(CP,X)):NEXT
2420 RD$(CP,24)=STR$(SC)
2425 POKE850,CU(24,1):POKE851,CU(24,2):SYS828:PRINTSTR$(SC)
2430 CZ=VAL(RD$(CP,1))
2440 HD=(SC-VAL(CR$(CZ,3)))
2443 PP=(INT(HD*10)/10):RD$(CP,25)=STR$(PP)
2445 POKE850,CU(25,1):POKE851,CU(25,2):SYS828
2447 PRINT" ":SYS828:PRINTRD$(CP,25)
2450 POKE850,CU(22,1):POKE851,CU(22,2):SYS828
2460 PRINTCR$(CZ,2):RD$(CP,22)=CR$(CZ,2)
2470 RD$(CP,2)=CR$(CZ,3)
2480 POKE850,CU(2,1):POKE851,CU(2,2):SYS828:PRINT" ":SYS828
2490 PRINT RD$(CP,2)
2500 RETURN
2598 REM INPUT SUBR TO ADD A RND
2600 POKE850,CU(3,1):POKE851,CU(3,2):SYS828
2603 FP=3
2610 PRINT"?[157][151]";:GOSUB9000
2620 RD$(CP,3)=AN$
2630 FORX=4TO21
2640 POKE850,CU(X,1):POKE851,CU(X,2):SYS828
2645 PRINT"?[151][157]";
2647 FP=X
2650 GOSUB9000
2660 RD$(CP,X)=AN$
2670 POKE851,CU(X,2)+4:SYS828:PRINT"?[151][157]";
2680 GOSUB8800
2685 IF AN$<>"Y"THEN HG$(CP,X-3)="N":GOTO2695
2690 HG$(CP,X-3)="Y"
2695 PRINTHG$(CP,X-3);
2700 POKE851,CU(X,2)+6:SYS828:PRINT"?[151][157]";
2710 GOSUB8800
2715 IF AN$<>"Y"THENHF$(CP,X-3)="N":GOTO2725
2720 HF$(CP,X-3)="Y"
2725 PRINTHF$(CP,X-3);
2730 NEXTX
2740 POKE850,CU(23,1):POKE851,CU(23,2):SYS828
2750 PRINT"?[151][157]";
2760 GOSUB9000
2770 RD$(CP,23)=AN$
2780 RETURN
2900 POKE850,20:POKE851,6:SYS828
2910 RETURN
2950 POKE850,20:POKE851,6:SYS828
2960 PRINTSP$
2970 RETURN
3000 POKE850,CU(FP,1):POKE851,CU(FP,2):SYS828
3010 PRINT"?[151][157]";
3020 GOSUB9000
3030 IF VAL(AN$)<>0 THEN RD$(CP,FP)=AN$:GOTO3050
3040 PRINTRD$(CP,FP);"[155]"
3050 IF FP<4 OR FP>21 THEN PRINT"":RETURN
3060 POKE851,CU(FP,2)+4:SYS828
3070 PRINT"?[151][157]";
3080 GOSUB8800
3090 IF AN$<>"" THEN HG$(CP,FP-3)=AN$:PRINTAN$:GOTO3110
3100 PRINT"[151]";HG$(CP,FP-3);"[155]"
3110 POKE851,CU(FP,2)+6:SYS828
3120 PRINT"?[151][157]";:GOSUB8800
3130 IF AN$<>"" THEN HF$(CP,FP-3)=AN$:PRINTAN$:GOTO3150
3140 PRINT"[151]";HF$(CP,FP-3);"[152]"
3150 PRINT"[155]"
3160 RETURN
4990 REM ****************
4992 REM * MAIN PROG MENU
4994 REM ****************
5000 POKE53280,11:PRINT"[147]";TAB(15);"GOLF MENU"
5010 PRINT"[151]LOAD GOLF FILE";TAB(25);"L"
5020 PRINT"SAVE GOLF FILE";TAB(25);"S"
5030 PRINT"BACKUP GOLF FILE";TAB(25);"B"
5040 PRINT"ROUNDS";TAB(25);"R"
5050 PRINT"HANDICAP";TAB(25);"H"
5060 PRINT"STATISTICS";TAB(25);"C"
5070 PRINT"QUIT";TAB(25);"Q"
5080 PRINT"";OM$;"[146][151]":OM$="":AB$=""
5090 PRINT"";OP$;"[146][151]":OP$=""
5100 GOSUB9200
5110 IF K$="L" THEN GOSUB700:GOTO5000
5120 IF K$="S" THEN GOSUB1000:GOTO5000
5130 IF K$="B" THEN GOSUB1200:GOTO5000
5140 IF K$="R" THEN 5300
5150 IF K$="H" THEN 6200
5160 IF K$="C" THEN 6800
5170 IF K$="Q" THEN 7400
5180 GOTO5100
5300 IF RC=0THENCN$=U9$
5310 IF RC<>0 THEN CX=VAL(RD$(1,1)):CN$=CR$(CX,1)
5320 GOSUB1500: REM FILL SCREEN
5325 CP=1:POKE53280,6
5340 GOSUB2000: REM DATA TO SCREEN
5360 IF RC<>0 THEN GOSUB2200:GOSUB2400:REM COUNT BIRD PAR ETC
5370 IF RC=0THENGOSUB2900:PRINT"NO ROUNDS LOADED[151]"
5400 REM DUMMY LINE
5405 GET W$:IF W$="" THEN 5405
5410 IF W$="A" THEN POKE53280,2:GOTO5500
5420 IF W$="N" THEN POKE53280,6:GOTO5650
5430 IF W$="B" THEN POKE53280,6:GOTO5700
5440 IF W$="Q" THEN 5000
5450 IF W$="D"THEN POKE53280,11:GOTO5760
5460 IF W$="M" THEN POKE53280,7:GOTO6000
5470 GOTO5405
5490 REM *** ADD A ROUND
5500 GOSUB2950:GOSUB500: REM GET COURSE NAME
5503 IF CX=0THENGOSUB1500:GOSUB2900:PRINT"COURSE NOT ON FILE[151]":GOTO5405
5505 CN$=CR$(CX,1):CP=RC+1:RD$(CP,1)=CX$:CH$="Y"
5520 GOSUB1800: REM UNDERLINES IN TABLE
5530 GOSUB1500: REM DISPLAY SCREEN
5540 GOSUB2000:REM DISPLAY DATA ON SCR
5550 GOSUB2600: REM GET DATA
5560 GOSUB2400: REM CALC SCORES
5570 GOSUB2200: REM CALC BIRD PAR ETC
5580 RC=RC+1
5590 GOTO5405
5648 REM *** VIEW NEXT ROUND
5650 GOSUB2950:IF CP+1>RC THEN 5400
5660 CP=CP+1:GOSUB2000:GOSUB2400:GOSUB2200
5670 GOTO5400
5698 REM *** BACK 1 RECORD
5700 GOSUB2950:IF CP-1<1 THEN 5400
5710 CP=CP-1:GOSUB2000:GOSUB2400:GOSUB2200
5720 GOTO5400
5760 GOSUB2900:PRINT"ARE YOU SURE? (Y/N)[146]"
5770 GETS$:IFS$="" THEN 5770
5780 IF S$<>"Y"THEN GOSUB2950:GOTO5400
5790 GOSUB2900:PRINT"O.K. DELETING "
5800 FORX=CPTORC+1
5810 FOR Y=1TORL
5820 RD$(X,Y)=RD$(X+1,Y)
5830 NEXTY:NEXTX
5840 FORX=CPTORC+1
5850 FORY=1TO18
5860 HG$(X,Y)=HG$(X+1,Y):HF$(X,Y)=HF$(X+1,Y)
5870 NEXTY:NEXTX
5880 RC=RC-1
5890 IF CP>RC THEN CP=RC
5900 GOSUB2000:GOSUB2400:GOSUB2200
5910 GOSUB2950:GOSUB2900:PRINT"DONE"
5920 FORX=1TO500:NEXT
5930 GOSUB2950:CH$="Y"
5940 GOTO 5400
5990 REM *** MODIFY ROUND
6000 GOSUB2950:POKE850,23:POKE851,3:SYS828
6010 PRINT"D[146]ATE P[146]UTTS 1-18[146] Q[146]UIT N[146]AME T[146]BL"
6020 GOSUB9400:GOSUB2950
6030 IF AN$="D" THEN FP=3:GOTO6080
6033 IF AN$="P" THEN FP=23:GOTO6080
6035 IF AN$<>"N"THEN 6043
6037 GOSUB500:IFCX=0 THEN 6040
6039 RD$(CP,1)=CX$
6040 GOSUB1500:GOSUB2000:GOSUB2400:GOSUB2200
6041 GOSUB2900:PRINT"DONE":GOTO6020
6043 IF AN$<>"T" THEN 6050
6045 GOSUB2400:GOSUB2900:PRINT"O.K.":GOTO6020
6050 IF VAL(AN$)>00 AND VAL(AN$)<19 THEN FP=VAL(AN$)+3:GOTO6080
6060 IF AN$="Q" THEN 6100
6070 GOTO6020
6075 CH$="Y"
6080 GOSUB3000
6086 GOSUB2900:PRINT"O.K."
6090 GOTO6020
6100 GOSUB2400:GOSUB2200
6110 POKE850,23:POKE851,3:SYS828
6120 PRINTSP$:POKE53280,11:GOTO5400
6190 REM *****************
6193 REM * CALC HANDICAP RTN
6195 REM *****************
6200 PRINT"[147]CALCULATE HANDICAP"
6210 PRINT"F1[146][151] CALCULATE OVERALL HANDICAP"
6220 PRINT"F3[146][151] HANDICAP FOR ONE COURSE"
6230 PRINT"F7[146][151] MAIN MENU"
6240 PRINT"";OM$;"[146][151]":OM$="":OC$="":RX=0:PS=0
6250 GOSUB9200
6260 IF K$="[136]" THEN 5000: REM F7
6270 IF K$<>"[133]"ANDK$<>"[134]" THEN 6250
6280 IF K$="[134]" THEN OC$="Y":GOSUB500:PRINT"[147]"
6285 IF K$="[134]"ANDCX=0 THEN OM$="NOT DONE":GOTO6200
6290 IF K$="[133]" AND RC<5 THEN OM$="NOT ENOUGH ROUNDS TO CALCULATE":GOTO6200
6300 PRINT"[147]CALCULATING[151]"
6303 IF RC<=20 THEN PX=1
6305 IF RC>20THENPX=RC-19
6310 FORX=1TO20:FORY=1TO4:HC(X,Y)=0:NEXTY:NEXTX
6320 FORX=RC TO PX STEP-1
6330 IF OC$="Y"THENIFRD$(X,1)<>CX$GOTO6370
6340 PS=PS+1:HC(PS,1)=VAL(RD$(X,25))
6350 HC(PS,2)=VAL(RD$(X,1)):HC(PS,3)=VAL(RD$(X,3))
6360 HC(PS,4)=VAL(RD$(X,24)):RX=RX+1
6370 NEXTX
6380 IF RX<5 THEN OM$="MIN 5 ROUNDS REQUIRED":GOTO6200
6390 REM *** NOW SORT ON DIFFERENTIAL
6400 FORX=1TORX-1
6410 IF HC(X,1)<=HC(X+1,1) THEN 6455
6420 FORY=1TO4:SC(Y)=HC(X,Y):NEXTY
6430 FOR Y=1TO4:HC(X,Y)=HC(X+1,Y):NEXTY
6440 FORY=1TO4:HC(X+1,Y)=SC(Y):NEXTY
6450 SR$="Y"
6455 NEXTX
6460 IF SR$="Y"THEN SR$="":GOTO6400
6470 REM DETERMINE # DIFFS NEEDED
6480 IF RX=5 THEN ND=1:GOTO6520
6490 IF RX=6 THEN ND=2:GOTO6520
6500 IF RX>20 THEN ND=10:GOTO6520
6510 ND=INT(RX/2)
6520 TD=0:FORX=1TOND:TD=TD+HC(X,1):NEXTX
6530 TD=(TD/ND)*.96
6540 TD=INT(TD+.5)
6550 PRINT"[147]YOUR HANDICP IS ";TD;
6560 IF OC$="Y" THEN PRINT" FOR ";CR$(CX,1)
6570 IF OC$<>"Y"THEN PRINT" FOR ALL COURSES"
6580 PRINT"";ND;" DIFFERENTIALS USED FROM ";RX;" ROUNDS"
6590 PRINT"";TAB(8);"F5[146] TO SEE ROUNDS USED"
6600 GOSUB9200:IFK$<>"[135]" THEN 6200
6610 PRINT"":TM=0
6620 FORX=1TORX
6625 DT=(LEN(STR$(HC(X,3))))-2:DT$=LEFT$(STR$(HC(X,3)),DT)+"-"
6626 DX$=STR$(HC(X,3)):DT$=DT$+MID$(DX$,DT+1)
6630 W1=HC(X,2):PRINT"[151]";CR$(W1,1);TAB(22);DT$;
6640 PRINTTAB(28);STR$(HC(X,4));TAB(32);STR$(HC(X,1));
6650 IF X<=ND THEN PRINT" _":GOTO6670
6660 PRINT
6670 TM=TM+1:IFTM<9 THEN 6700
6680 TM=0:PRINT"";TAB(7);"MORE - PRESS A KEY[151]"
6690 GOSUB9200:PRINT"[147]"
6700 NEXTX
6710 PRINTTAB(7);"ALL - PRESS A KEY[151]":GOSUB9200:GOTO5000
6800 PRINT"[147]";TAB(9);"PERSONAL GOLF STATISTICS"
6810 PRINT"F1[146] [151]OVERALL BY COURSE"
6820 PRINT"F3[146] [151]PARS BIRDS ETC"
6870 PRINT"F8[146] [151]RETURN TO MAIN MENU"
6880 GOSUB9200
6890 IF K$="[140]" THEN 5000:REM F8
6900 IF K$="[133]" THEN 6950: REM F1
6910 IF K$="[134]"THEN 7500:REM F3
6940 GOTO6880
6950 PRINT"[147]":POKE850,10:POKE851,11:SYS828
6960 PRINT"CALCULATING STATS[151]"
6970 FORX=0TO20:FORY=0TO5:HC(X,Y)=0:NEXTY:NEXTX
6980 FORX=1TORC
6990 WX=VAL(RD$(X,1)):HC(WX,1)=HC(WX,1)+1:REM ROUNDS
7000 HC(0,1)=HC(0,1)+1
7010 HC(WX,2)=HC(WX,2)+VAL(RD$(X,24))
7020 HC(0,2)=HC(0,2)+VAL(RD$(X,24))
7030 HC(WX,3)=HC(WX,3)+VAL(RD$(X,23))
7040 HC(0,3)=HC(0,3)+VAL(RD$(X,23))
7050 FOR Y=1 TO 18
7060 IF HG$(X,Y)<>"Y" THEN 7090
7070 HC(WX,4)=HC(WX,4)+1
7080 HC(0,4)=HC(0,4)+1
7090 IF HF$(X,Y)<>"Y" THEN 7120
7100 HC(WX,5)=HC(WX,5)+1
7110 HC(0,5)=HC(0,5)+1
7120 NEXTY
7130 NEXTX
7140 PRINTTAB(10);"[147]OVERALL AVERAGES[151]"
7150 PRINT" CRS RND SCORE PUTT HG % HF %[151]"
7160 FORX=1TO20
7170 IFHC(X,1)=0 THEN 7300
7180 PRINT" ";CR$(X,23);TAB(8);HC(X,1);
7190 W1=HC(X,2)/HC(X,1):W1=INT((W1+.05)*10):W1=W1/10
7200 PRINTTAB(13);W1;
7210 W1=HC(X,3)/HC(X,1):W1=INT((W1+.05)*10):W1=W1/10
7220 PRINTTAB(21);W1;
7230 W1=HC(X,4)/(HC(X,1)*18)
7240 W1=INT((W1+.05)*1000):W1=W1/10
7250 PRINTTAB(27);W1;
7260 W1=HC(X,5)/(HC(X,1)*18)
7270 W1=INT((W1+.05)*1000):W1=W1/10
7280 PRINTTAB(33);W1
7290 IF X=0 THEN RETURN
7300 NEXTX
7310 PRINT"TOTAL";TAB(8);HC(0,1);
7320 X=0:GOSUB7190
7330 POKE850,23:POKE851,17:SYS828
7340 PRINT"PRESS A KEY[155]"
7350 GOSUB9200:GOTO6800
7400 IF SV$="Y" THEN 7450
7410 IF CH$<>"Y" THEN 7450
7420 SV$="Y":OM$="CHANGES MADE - NO SAVE DONE"
7430 OP$="'Q' AGAIN TO VERIFY":GOTO5000
7450 PRINT"[147]END OF RUN":END
7500 PRINT"[147]A[146]CTUAL OR AV[146]ERAGE"
7510 GOSUB9200:IFK$<>"A"ANDK$<>"V" THEN 7500
7520 W$=K$:PRINT"CALCULATING":S$="Y"
7523 FORX=0TO30:FORY=0TO7:HC(X,Y)=0:NEXTY:NEXTX
7530 FORCP=1TORC
7540 GOSUB2200
7550 HC(W9,1)=HC(W9,1)+1
7555 HC(W9,2)=HC(W9,2)+EG
7560 HC(W9,3)=HC(W9,3)+BI
7565 HC(W9,4)=HC(W9,4)+PA
7570 HC(W9,5)=HC(W9,5)+BO
7575 HC(W9,6)=HC(W9,6)+DB
7580 HC(W9,7)=HC(W9,7)+OT
7590 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0
7600 NEXTCP
7610 FORX=1TO20:IFHC(X,1)=0THEN7630
7620 FORY=1TO7:HC(0,Y)=HC(0,Y)+ HC(X,Y):NEXTY
7630 NEXTX
7640 IF W$="A" THEN LC=0:T$="N":GOTO7710
7650 FORX=0TO20:IFHC(X,1)=0THEN7700
7660 FORY=2TO7
7670 W=INT((HC(X,Y)/HC(X,1))*10)
7680 HC(X,Y)=W/10
7690 NEXTY
7700 NEXTX:S$="N":LC=0:T$="N"
7710 PRINT"[147] CRS RND EGL BRD PAR BOG DBL >DB[151]"
7720 FORX=1TO20:IFHC(X,1)=0THEN7810
7730 PRINTCR$(X,23);TAB(6);HC(X,1);
7740 Z=5:FORY=2TO7
7750 PRINTTAB(Z+5);HC(X,Y);
7760 Z=Z+5:NEXTY:LC=LC+1:PRINT
7770 IFLC<15 THEN 7800
7780 LC=0:GOSUB9190
7790 PRINT"[147] CRS RND EGL BRD PAR BOG DBL >DB[151]"
7800 IF T$="Y"THENRETURN
7810 NEXTX
7820 PRINT"TOTAL";TAB(6);HC(0,1);
7830 X=0:T$="Y":GOSUB7740
7840 GOSUB9190:GOTO6800
8000 PRINT"[147]";TAB(8);"PERSONAL GOLF STATISTICS"
8010 PRINTTAB(8);"HANDICAP AND STATISTICS"
8020 PRINT"[151] THIS PROGRAM ALLOWS YOU TO ENTER DATA"
8030 PRINT" ABOUT A ROUND OF GOLF. YOU MAY SEE"
8040 PRINT" YOUR HANDICAP AND OTHER ASSORTED"
8050 PRINT" STATISTICS."
8060 PRINT"FOLLOW THE MENUS TO ENTER OR MODIFY"
8070 PRINT"INFORMATION. A RED QUESTION MARK (?[151])"
8080 PRINT"WILL SHOW YOU WHERE THE CURSOR IS. IF"
8090 PRINT"YOU ENTER LESS THAN THE MAX NUMBER OF"
8100 PRINT"CHARACTERS, PRESS RETURN[151]."
8110 PRINT"YOU WILL BE ASKED TO ENTER THE SCORE "
8120 PRINT"ON EACH HOLE, AS WELL AS WHETHER YOU"
8130 PRINT"HIT THE GREEN AND FAIRWAY. PRESSING"
8140 PRINT"RETURN FOR THE LAST TWO ASSUMES NO."
8160 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0:SC=0:CZ=0:HD=0:PP=0
8200 RETURN
8798 REM *** GETS FOR HF AND HG
8800 POKE198,0:A$="":AN$=""
8810 GETA$:IFA$="" THEN 8810
8820 IF A$=CHR$(20) THEN 8810
8830 IF A$=CHR$(13)THEN RETURN
8840 AN$=A$:RETURN
8998 REM *** GETS FOR SCORES AND STUFF
9000 POKE198,0:A$="":AN$="":TM=0
9010 GETA$:IF A$="" THEN 9010
9020 IF A$=CHR$(20) THEN 9010
9030 IF A$=CHR$(13) ANDTM=0THEN9010
9035 IF A$=CHR$(13) THEN RETURN
9040 IF A$<"0"ORA$>"9"THEN 9010
9050 PRINTA$;
9060 AN$=AN$+A$:TM=TM+1
9070 IF TM=CU(FP,3)THEN RETURN
9080 GOTO9010
9190 POKE850,22:POKE851,7:SYS828:PRINT"PRESS A KEY[151]"
9200 GETK$:IFK$="" THEN 9200
9210 RETURN
9398 REM *** INP FOR MODIFY RTN
9400 POKE198,0:AN$="":A$="":TM=0
9410 GETA$:IFA$="" THEN 9410
9413 IF A$=CHR$(20) THEN 9410
9415 IF A$=CHR$(13)THENRETURN
9420 IF(A$="D"ORA$="P"ORA$="Q")ANDTM=0THENAN$=A$:RETURN
9422 IF(A$="N"ORA$="T")ANDTM=0THENAN$=A$:RETURN
9430 TM=TM+1:IFA$>"0"ANDA$<"9"THEN9440
9432 IFA$="9"ANDTM=1THENTM=2:GOTO9440
9434 IF A$="0"ANDTM=2 THEN RETURN
9435 GOTO 9410
9440 AN$=AN$+A$
9450 IF TM=2 THEN RETURN
9460 GOTO9410
9600 INPUT#15,EN,EM$
9610 IF EN=0 THEN RETURN
9620 AB$="Y":RETURN
10000 DATA 2,13,20,4,16,4,4,34,4
10010 DATA 8,10,2,8,31,2
10020 DATA 9,10,2,9,31,2
10030 DATA 10,10,2,10,31,2
10040 DATA 11,10,2,11,31,2
10050 DATA 12,10,2,12,31,2
10060 DATA 13,10,2,13,31,2
10070 DATA 14,10,2,14,31,2
10080 DATA 15,10,2,15,31,2
10090 DATA 16,10,2,16,31,2
10100 DATA 4,5,2,18,11,2
10110 DATA 18,21,3,18,33,4
10998 REM M/L FOR CURSOR
11000 DATA 174,82,03,172,83,03,24,32,240,255,96
12000 OPEN15,8,15,"S:GOLF HANDICAP":CLOSE15:SAVE"GOLF HANDICAP",8